/**
 * @ClassName AddTwoNumbers
 * 给你两个 非空 的链表，表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的，并且每个节点只能存储 一位 数字。
 * <p>
 * 请你将两个数相加，并以相同形式返回一个表示和的链表。
 * <p>
 * 你可以假设除了数字 0 之外，这两个数都不会以 0 开头。
 * @Author ykx
 * @Date 2024/2/27 16:32
 * @Version 1.0
 */
public class LC2 {
    public static void main(String[] args) {
        LC2 lc2 = new LC2();
        int[] add1 = {2, 4, 3};
        int[] add2 = {5, 6, 4};
        System.out.println(lc2.addTwoNumbers(ListNode.setData(add1), ListNode.setData(add2)));
    }

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummyHead = new ListNode(0);
        ListNode result = dummyHead;
        int carry = 0;
        while (true) {
            if (l1 == null && l2 == null && carry == 0) {
                break;
            }
            int num = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + carry;
            ListNode node = new ListNode(num % 10);
            result.next = node;
            result = result.next;
            carry = num / 10;
            l1 = l1 == null ? null : l1.next;
            l2 = l2 == null ? null : l2.next;

        }
        return dummyHead.next;
    }
}
